package org.ch02.test04;

import org.ch02.entity.Student;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Parameter;

/**
 * @author CSY
 * @date 2025 - 03 - 18
 */
public class MainTest02 {
    public static void main(String[] args) throws Exception {
        //第一：获取操作类的Class对象
        Class<Student> clazz = Student.class;

        //第二：基于Class对象，实现相关的操作 - 运行时、动态性 - 框架、工具
        //Class对象可以获取类的所有信息（对象）

        //实例化
        Student stu = clazz.getConstructor().newInstance();

        //获取类中指定名称的方法对象
        Method sleepMethod = clazz.getDeclaredMethod("sleep", int.class, String.class);

        //访问权限开启
        sleepMethod.setAccessible(true);

        //调用方法
        Object msg = sleepMethod.invoke(stu, 15, "教室");

        //注意：在这里按需想下转型 - 父类对象转换为子类对象
        /*if (msg instanceof String){
            String m = (String) msg;
            System.out.println(m);
        }*/
    }
}
